]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
search: add support for default disabled search providers
authorGiovanni Campagna <gcampagna@src.gnome.org>
Fri, 1 Aug 2014 11:35:31 +0000 (13:35 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Tue, 19 Aug 2014 13:29:22 +0000 (15:29 +0200)
Search providers that should be disabled by default come with
a DefaultDisabled=true key in their keyfile, and are enabled
with the "enabled" whitelist, not with the "disabled" blacklist.

https://bugzilla.gnome.org/show_bug.cgi?id=734110

js/ui/remoteSearch.js
js/ui/search.js

index 8781de893d794176a4dd610252bee8f4c9769fea..9ab413e6f1cf4209408fa70573bdd3770902297c 100644 (file)
@@ -110,6 +110,13 @@ function loadRemoteSearchProviders(callback) {
             else
                 remoteProvider = new RemoteSearchProvider(appInfo, busName, objectPath);
 
+            remoteProvider.defaultEnabled = true;
+            try {
+                remoteProvider.defaultEnabled = !keyfile.get_boolean(group, 'DefaultDisabled');
+            } catch(e) {
+                // ignore error
+            }
+
             objectPaths[objectPath] = remoteProvider;
             loadedProviders.push(remoteProvider);
         } catch(e) {
@@ -132,8 +139,14 @@ function loadRemoteSearchProviders(callback) {
 
     loadedProviders = loadedProviders.filter(function(provider) {
         let appId = provider.appInfo.get_id();
-        let disabled = searchSettings.get_strv('disabled');
-        return disabled.indexOf(appId) == -1;
+
+        if (provider.defaultEnabled) {
+            let disabled = searchSettings.get_strv('disabled');
+            return disabled.indexOf(appId) == -1;
+        } else {
+            let enabled = searchSettings.get_strv('enabled');
+            return enabled.indexOf(appId) != -1;
+        }
     });
 
     loadedProviders.sort(function(providerA, providerB) {
index dc2729a4a1bbf005d449625fd13643b604ef6600..1d8ce7389479783c5cd393a351652eecd2eca8e3 100644 (file)
@@ -32,6 +32,7 @@ const SearchSystem = new Lang.Class({
         this._registerProvider(new AppDisplay.AppSearchProvider());
 
         this._searchSettings = new Gio.Settings({ schema_id: SEARCH_PROVIDERS_SCHEMA });
+        this._searchSettings.connect('changed::enabled', Lang.bind(this, this._reloadRemoteProviders));
         this._searchSettings.connect('changed::disabled', Lang.bind(this, this._reloadRemoteProviders));
         this._searchSettings.connect('changed::disable-external', Lang.bind(this, this._reloadRemoteProviders));
         this._searchSettings.connect('changed::sort-order', Lang.bind(this, this._reloadRemoteProviders));